﻿/*
创建人：龙斌
日期：2022-07-10
描述：Combox下拉
*/
(function ($) {
    //Combox下拉选择组件
    $.fn.newselectCombox = function (option, param, obj) {
        switch (typeof option) {
            case "string":
                if (option === "init") {//恢复初始化状态
                    if (document.getElementById("selCombox" + obj.index)) {
                        comboxDefaults.initUI(1);
                    }
                }
                else if (option === "setCombo") {
                    if (document.getElementById("selCombox" + obj.index)) {
                        param = $.extend({}, { Name: "" }, param);
                        comboxDefaults.comboxSearch(param.Name, obj);
                    }
                }
                else if (option === "getValue") {
                    if (document.getElementById("selCombox" + obj.index)) {
                        return $("#selCombox" + obj.id).combobox('getValue')
                    }
                }
                else if (option === "getText") {
                    if (document.getElementById(obj.id)) {
                        return $("#selCombox" + obj.index).combobox('getText')
                    }
                }
                break;
            case "object":
                var strHtml = getComboHtml(obj);
                $.parser.parse($(this).html(strHtml));
                comboxOption = $.extend({}, comboxOption, option);
                comboxDefaults.init(obj);
                break;
            case "undefined":
                var strHtml = getComboHtml(obj);
                $.parser.parse($(this).html(strHtml));
                comboxOption = $.extend({}, comboxOption, option);
                comboxDefaults.init(obj);
                break;
            default:
                break;
        }
    };
    //订单html控件
    function getComboHtml(obj) {
        return "<div style='float: left;'>" +
                              "<div id='divComboxTxt" + obj.index + "' style='float: left'>" +
                              "<span style='float: left'><input id='txtCombox" + obj.index + "' class='easyui-textbox' type='text' data-options='' style='width: 150px;height: 22px' /></span>" +
                              "<a id='btnComboxSearch" + obj.index + "' href='javascript:void(0)' class='easyui-linkbutton' data-options=\"iconCls:\'icon-search\'\" style='float: left;height: 22px'></a>" +
                              "</div>" +
                              "<div id='divComboxSelect" + obj.index + "' style='float: left'>" +
                              " <span style='float: left'><select style='width: 150px; height: 22px' id='selCombox" + obj.index + "' data-options='editable:false' class='easyui-combobox'></select></span>" +
                               "<a id='btnComboxClear" + obj.index + "' href='javascript:void(0)' class='easyui-linkbutton' data-options=\"iconCls:\'icon-cancel\'\" style='height: 22px;float: left'></a>" +
                              "</div></div>";

    }

    //combox组件默认事件
    var comboxOption = {
        param: { Name: "" }, //参数
        search: function (val, obj) { }, //件号查询点击事件(参数为输入框数据)
        cancel: function (obj) { }, //件号取消点击事件
        selected: function (value, text, record, obj) { } //件号下拉选择事件（参数为选择的下拉数据ID,文本）
    };

    //定义combox下拉事件实现
    var comboxDefaults = {
        //url: page.comboxUrl, //getRootPath() + "/Ashx/ZsHandler/ZSTestRunNoticeBillHandler.ashx", //后台路径
        //初始化页面
        init: function (obj) {
            comboxDefaults.bind(obj);
            comboxDefaults.initUI('', obj); //初始化页面控件
            if (isNullOrWhiteSpaceStr(comboxOption.param.Name) === false) {
                debugger;
                comboxDefaults.comboxSearch(comboxOption.param.Name, obj);
            }
        },
        //页面事件绑定
        bind: function (obj) {
            //件号查询
            $('#btnComboxSearch' + obj.index).on("click", function () {
                clearMessage();
                var comboxVal = $('#txtCombox' + obj.index).textbox("getValue");
                if (isNullOrWhiteSpaceStr(comboxVal)) {
                    displayMessage("需输入查询条件", false);
                    return;
                }
                comboxDefaults.comboxSearch(comboxVal, obj);
                comboxOption.search(comboxVal, obj); //查询回调
            });
            //查询取消
            $('#btnComboxClear' + obj.index).on("click", function () {
                clearMessage()
                comboxDefaults.initUI(1, obj);
                comboxOption.cancel(obj); //取消回调
            });
        },
        //件号查询方法
        comboxSearch: function (name, obj) {
            $.postAjax({
                url: obj.url,
                data: { action: obj.action, Name: name },
                ajaxSuccess: function (res) { //ajax成功后  GetComboxSelect
                    if (res.Result) {
                        $('#divComboxTxt' + obj.index).hide();
                        $('#divComboxSelect' + obj.index).show();
                        //绑定下拉数据
                        $("#selCombox" + obj.index).combobox({
                            valueField: 'ID',
                            textField: 'NAME',
                            panelHeight: 200,
                            data: res.DBTable, //下拉数据
                            onSelect: function (record) {
                                comboxOption.selected(record.ID, record.NAME, record, obj); //选择后回调
                                // comboxDefaults.initUI(1, obj);
                            }
                        });
                    } else {
                        displayMessage(res.Message, res.Result);
                    }
                }
            });
        },
        //初始化页面控件
        initUI: function (type, obj) {
            //文本框、搜索按钮显示
            if (type === 1) {
                $('#txtCombox' + obj.index).textbox("setValue", "");
                $('#selCombox' + obj.index).combobox('clear');
            }
            $('#divComboxTxt' + obj.index).show();
            $('#divComboxSelect' + obj.index).hide();
        }
    };
    //自定义ajax（post类型）
    $.postAjax = function (param) {
        var options = {
            type: "Post",
            url: "",
            data: null,
            cashe: false,
            async: true,
            dataType: "json",
            beforeSend: function () {
                $.messager.progress({ text: '', msg: '处理中...' });
            },
            ajaxSuccess: function (data) { },
            success: function (data) {
                $.messager.progress('close');
                options.ajaxSuccess(data);
            },
            ajaxError: function () { },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                $.messager.progress('close');
                displayMessage(XMLHttpRequest.responseText, false);
                options.ajaxError();
            }
        };
        options = $.extend({}, options, param);
        $.ajax(options);
    }

})(jQuery)